package com.fr.schedule.util;

import com.fr.base.ArrayUtils;
import com.fr.base.FRContext;
import com.fr.base.StringUtils;
import com.fr.base.core.BaseCoreUtils;
import com.fr.base.core.util.ListMap;
import com.fr.base.dav.Env;
import com.fr.base.file.DatasourceManager;
import com.fr.base.xml.BaseXMLUtils;
import com.fr.data.TableData;
import com.fr.data.core.DataUtils;
import com.fr.data.impl.CustomDictionary;
import com.fr.data.impl.TableColumn;
import com.fr.report.cellElement.Formula;
import com.fr.report.parameter.Parameter;
import com.fr.report.script.Calculator;
import com.fr.report.script.core.FArray;
import com.fr.report.web.ui.ComboBox;
import com.fr.schedule.ViewScheduleSavedInfo;
import com.fr.web.AbstractReportletRequest;
import com.fr.web.ReportletRequest;
import com.fr.web.ScheduleWorkBook;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;

public abstract class ScheduleUtils
{
  public static Object[] createCartesianParameterMapList(Parameter[] paramArrayOfParameter, Calculator paramCalculator)
  {
    // Byte code:
    //   0: new 2	java/util/ArrayList
    //   3: dup
    //   4: invokespecial 3	java/util/ArrayList:<init>	()V
    //   7: astore_2
    //   8: new 2	java/util/ArrayList
    //   11: dup
    //   12: invokespecial 3	java/util/ArrayList:<init>	()V
    //   15: astore_3
    //   16: new 4	com/fr/base/core/util/ListMap
    //   19: dup
    //   20: invokespecial 5	com/fr/base/core/util/ListMap:<init>	()V
    //   23: astore 4
    //   25: aload_2
    //   26: aload 4
    //   28: invokeinterface 6 2 0
    //   33: pop
    //   34: new 4	com/fr/base/core/util/ListMap
    //   37: dup
    //   38: invokespecial 5	com/fr/base/core/util/ListMap:<init>	()V
    //   41: astore 5
    //   43: iconst_0
    //   44: istore 6
    //   46: iload 6
    //   48: aload_0
    //   49: arraylength
    //   50: if_icmpge +420 -> 470
    //   53: aload_0
    //   54: iload 6
    //   56: aaload
    //   57: astore 7
    //   59: aload 7
    //   61: invokevirtual 7	com/fr/report/parameter/Parameter:getValue	()Ljava/lang/Object;
    //   64: astore 8
    //   66: aload 8
    //   68: instanceof 8
    //   71: ifeq +92 -> 163
    //   74: aload 8
    //   76: checkcast 8	com/fr/data/impl/TableColumn
    //   79: astore 9
    //   81: aload 5
    //   83: aload 9
    //   85: invokevirtual 9	com/fr/data/impl/TableColumn:getTableDataName	()Ljava/lang/String;
    //   88: invokeinterface 10 2 0
    //   93: ifeq +33 -> 126
    //   96: aload 5
    //   98: aload 9
    //   100: invokevirtual 9	com/fr/data/impl/TableColumn:getTableDataName	()Ljava/lang/String;
    //   103: invokeinterface 11 2 0
    //   108: checkcast 12	java/util/List
    //   111: astore 10
    //   113: aload 10
    //   115: aload 7
    //   117: invokeinterface 6 2 0
    //   122: pop
    //   123: goto +341 -> 464
    //   126: new 2	java/util/ArrayList
    //   129: dup
    //   130: invokespecial 3	java/util/ArrayList:<init>	()V
    //   133: astore 10
    //   135: aload 5
    //   137: aload 9
    //   139: invokevirtual 9	com/fr/data/impl/TableColumn:getTableDataName	()Ljava/lang/String;
    //   142: aload 10
    //   144: invokeinterface 13 3 0
    //   149: pop
    //   150: aload 10
    //   152: aload 7
    //   154: invokeinterface 6 2 0
    //   159: pop
    //   160: goto +304 -> 464
    //   163: aload 8
    //   165: instanceof 14
    //   168: ifeq +245 -> 413
    //   171: aload 8
    //   173: checkcast 14	com/fr/report/cellElement/Formula
    //   176: astore 9
    //   178: aload 9
    //   180: invokevirtual 15	com/fr/report/cellElement/Formula:getContent	()Ljava/lang/String;
    //   183: astore 10
    //   185: aload 10
    //   187: ldc 16
    //   189: invokevirtual 17	java/lang/String:startsWith	(Ljava/lang/String;)Z
    //   192: ifeq +11 -> 203
    //   195: aload 10
    //   197: iconst_1
    //   198: invokevirtual 18	java/lang/String:substring	(I)Ljava/lang/String;
    //   201: astore 10
    //   203: aload_1
    //   204: aload 10
    //   206: invokevirtual 19	com/fr/report/script/Calculator:eval	(Ljava/lang/String;)Ljava/lang/Object;
    //   209: astore 11
    //   211: aload 11
    //   213: instanceof 20
    //   216: ifeq +110 -> 326
    //   219: aload_3
    //   220: new 21	com/fr/report/parameter/Parameter
    //   223: dup
    //   224: aload 7
    //   226: invokevirtual 22	com/fr/report/parameter/Parameter:getName	()Ljava/lang/String;
    //   229: aload 11
    //   231: invokespecial 23	com/fr/report/parameter/Parameter:<init>	(Ljava/lang/String;Ljava/lang/Object;)V
    //   234: invokeinterface 6 2 0
    //   239: pop
    //   240: new 2	java/util/ArrayList
    //   243: dup
    //   244: invokespecial 3	java/util/ArrayList:<init>	()V
    //   247: astore 12
    //   249: aload 11
    //   251: checkcast 20	com/fr/report/script/core/FArray
    //   254: astore 13
    //   256: iconst_0
    //   257: istore 14
    //   259: iload 14
    //   261: aload 13
    //   263: invokevirtual 24	com/fr/report/script/core/FArray:length	()I
    //   266: if_icmpge +50 -> 316
    //   269: new 4	com/fr/base/core/util/ListMap
    //   272: dup
    //   273: invokespecial 5	com/fr/base/core/util/ListMap:<init>	()V
    //   276: astore 15
    //   278: aload 15
    //   280: aload_0
    //   281: iload 6
    //   283: aaload
    //   284: invokevirtual 22	com/fr/report/parameter/Parameter:getName	()Ljava/lang/String;
    //   287: aload 13
    //   289: iload 14
    //   291: invokevirtual 25	com/fr/report/script/core/FArray:elementAt	(I)Ljava/lang/Object;
    //   294: invokeinterface 13 3 0
    //   299: pop
    //   300: aload 12
    //   302: aload 15
    //   304: invokeinterface 6 2 0
    //   309: pop
    //   310: iinc 14 1
    //   313: goto -54 -> 259
    //   316: aload_2
    //   317: aload 12
    //   319: invokestatic 26	com/fr/schedule/util/ScheduleUtils:cartesian	(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
    //   322: astore_2
    //   323: goto +49 -> 372
    //   326: iconst_0
    //   327: istore 12
    //   329: iload 12
    //   331: aload_2
    //   332: invokeinterface 27 1 0
    //   337: if_icmpge +35 -> 372
    //   340: aload_2
    //   341: iload 12
    //   343: invokeinterface 28 2 0
    //   348: checkcast 29	java/util/Map
    //   351: aload_0
    //   352: iload 6
    //   354: aaload
    //   355: invokevirtual 22	com/fr/report/parameter/Parameter:getName	()Ljava/lang/String;
    //   358: aload 11
    //   360: invokeinterface 13 3 0
    //   365: pop
    //   366: iinc 12 1
    //   369: goto -40 -> 329
    //   372: aload 4
    //   374: aload_0
    //   375: iload 6
    //   377: aaload
    //   378: invokevirtual 22	com/fr/report/parameter/Parameter:getName	()Ljava/lang/String;
    //   381: aload 11
    //   383: invokeinterface 13 3 0
    //   388: pop
    //   389: goto +75 -> 464
    //   392: astore 10
    //   394: invokestatic 31	com/fr/base/FRContext:getLogger	()Ljava/util/logging/Logger;
    //   397: getstatic 32	java/util/logging/Level:WARNING	Ljava/util/logging/Level;
    //   400: aload 10
    //   402: invokevirtual 33	java/lang/Exception:getMessage	()Ljava/lang/String;
    //   405: aload 10
    //   407: invokevirtual 34	java/util/logging/Logger:log	(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
    //   410: goto +54 -> 464
    //   413: iconst_0
    //   414: istore 9
    //   416: iload 9
    //   418: aload_2
    //   419: invokeinterface 27 1 0
    //   424: if_icmpge +40 -> 464
    //   427: aload_2
    //   428: iload 9
    //   430: invokeinterface 28 2 0
    //   435: checkcast 29	java/util/Map
    //   438: aload_0
    //   439: iload 6
    //   441: aaload
    //   442: invokevirtual 22	com/fr/report/parameter/Parameter:getName	()Ljava/lang/String;
    //   445: aload_0
    //   446: iload 6
    //   448: aaload
    //   449: invokevirtual 7	com/fr/report/parameter/Parameter:getValue	()Ljava/lang/Object;
    //   452: invokeinterface 13 3 0
    //   457: pop
    //   458: iinc 9 1
    //   461: goto -45 -> 416
    //   464: iinc 6 1
    //   467: goto -421 -> 46
    //   470: invokestatic 35	com/fr/base/FRContext:getDatasourceManager	()Lcom/fr/base/file/DatasourceManager;
    //   473: astore 6
    //   475: aload 5
    //   477: invokeinterface 36 1 0
    //   482: invokeinterface 37 1 0
    //   487: astore 7
    //   489: aload 7
    //   491: invokeinterface 38 1 0
    //   496: ifeq +218 -> 714
    //   499: aload 7
    //   501: invokeinterface 39 1 0
    //   506: checkcast 40	java/lang/String
    //   509: astore 8
    //   511: aload 6
    //   513: aload 8
    //   515: invokestatic 41	com/fr/data/core/DataUtils:getClonedTableData	(Lcom/fr/base/file/DatasourceManager;Ljava/lang/String;)Lcom/fr/data/TableData;
    //   518: astore 9
    //   520: aload 5
    //   522: aload 8
    //   524: invokeinterface 11 2 0
    //   529: checkcast 12	java/util/List
    //   532: astore 10
    //   534: new 2	java/util/ArrayList
    //   537: dup
    //   538: invokespecial 3	java/util/ArrayList:<init>	()V
    //   541: astore 11
    //   543: iconst_0
    //   544: istore 12
    //   546: iload 12
    //   548: aload 9
    //   550: invokeinterface 42 1 0
    //   555: if_icmpge +100 -> 655
    //   558: new 4	com/fr/base/core/util/ListMap
    //   561: dup
    //   562: invokespecial 5	com/fr/base/core/util/ListMap:<init>	()V
    //   565: astore 13
    //   567: iconst_0
    //   568: istore 14
    //   570: iload 14
    //   572: aload 10
    //   574: invokeinterface 27 1 0
    //   579: if_icmpge +60 -> 639
    //   582: aload 10
    //   584: iload 14
    //   586: invokeinterface 28 2 0
    //   591: checkcast 21	com/fr/report/parameter/Parameter
    //   594: astore 15
    //   596: aload 15
    //   598: invokevirtual 7	com/fr/report/parameter/Parameter:getValue	()Ljava/lang/Object;
    //   601: checkcast 8	com/fr/data/impl/TableColumn
    //   604: invokevirtual 43	com/fr/data/impl/TableColumn:getColumnIndex	()I
    //   607: istore 16
    //   609: aload 13
    //   611: aload 15
    //   613: invokevirtual 22	com/fr/report/parameter/Parameter:getName	()Ljava/lang/String;
    //   616: aload 9
    //   618: iload 12
    //   620: iload 16
    //   622: invokeinterface 44 3 0
    //   627: invokeinterface 13 3 0
    //   632: pop
    //   633: iinc 14 1
    //   636: goto -66 -> 570
    //   639: aload 11
    //   641: aload 13
    //   643: invokeinterface 6 2 0
    //   648: pop
    //   649: iinc 12 1
    //   652: goto -106 -> 546
    //   655: aload_2
    //   656: aload 11
    //   658: invokestatic 26	com/fr/schedule/util/ScheduleUtils:cartesian	(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
    //   661: astore_2
    //   662: aload 9
    //   664: invokeinterface 45 1 0
    //   669: goto +21 -> 690
    //   672: astore 12
    //   674: invokestatic 31	com/fr/base/FRContext:getLogger	()Ljava/util/logging/Logger;
    //   677: getstatic 32	java/util/logging/Level:WARNING	Ljava/util/logging/Level;
    //   680: aload 12
    //   682: invokevirtual 33	java/lang/Exception:getMessage	()Ljava/lang/String;
    //   685: aload 12
    //   687: invokevirtual 34	java/util/logging/Logger:log	(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
    //   690: goto -201 -> 489
    //   693: astore 8
    //   695: invokestatic 31	com/fr/base/FRContext:getLogger	()Ljava/util/logging/Logger;
    //   698: getstatic 32	java/util/logging/Level:WARNING	Ljava/util/logging/Level;
    //   701: aload 8
    //   703: invokevirtual 33	java/lang/Exception:getMessage	()Ljava/lang/String;
    //   706: aload 8
    //   708: invokevirtual 34	java/util/logging/Logger:log	(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
    //   711: goto -222 -> 489
    //   714: iconst_2
    //   715: anewarray 46	java/lang/Object
    //   718: dup
    //   719: iconst_0
    //   720: aload_2
    //   721: aastore
    //   722: dup
    //   723: iconst_1
    //   724: aload_3
    //   725: aastore
    //   726: areturn
    //
    // Exception table:
    //   from	to	target	type
    //   178	389	392	java/lang/Exception
    //   662	669	672	java/lang/Exception
    //   499	690	693	java/lang/Exception
  }

  public static List cartesian(List paramList1, List paramList2)
  {
    ArrayList localArrayList = new ArrayList();
    for (int i = 0; i < paramList1.size(); ++i)
      for (int j = 0; j < paramList2.size(); ++j)
      {
        ListMap localListMap = new ListMap();
        localListMap.putAll((Map)paramList1.get(i));
        localListMap.putAll((Map)paramList2.get(j));
        localArrayList.add(localListMap);
      }
    return localArrayList;
  }

  public static String getScheduleSavaPath(String paramString1, String paramString2, String paramString3)
  {
    if (FRContext.getCurrentEnv() != null)
      return FRContext.getCurrentEnv().getPath() + File.separator + "schedule" + File.separator + paramString2 + File.separator + paramString3 + File.separator;
    return "";
  }

  public static File createDirectoryFromTaskNameAndActionName(String paramString1, String paramString2)
  {
    return new File(BaseCoreUtils.pathJoin(new String[] { FRContext.getCurrentEnv().getPath(), "schedule", paramString1, paramString2 }));
  }

  public static List generatorViewScheduleSavedInfoFromTask(String paramString)
  {
    File localFile1 = new File(FRContext.getCurrentEnv().getPath() + File.separator + "schedule" + File.separator + paramString);
    File[] arrayOfFile1 = localFile1.listFiles();
    int i = arrayOfFile1.length;
    ArrayList localArrayList = new ArrayList();
    for (int j = 0; j < i; ++j)
    {
      File[] arrayOfFile2 = arrayOfFile1[j].listFiles();
      int k = 0;
      int l = arrayOfFile2.length;
      while (k < l)
      {
        File localFile2 = new File(arrayOfFile2[k], "info.xml");
        if (!(localFile2.exists()))
          break label178:
        try
        {
          localArrayList.add((ViewScheduleSavedInfo)BaseXMLUtils.readXMLFile(new FileInputStream(localFile2), new ViewScheduleSavedInfo()));
        }
        catch (Exception localException)
        {
          FRContext.getLogger().log(Level.WARNING, localException.getMessage(), localException);
        }
        ++k;
      }
    }
    label178: return localArrayList;
  }

  public static Parameter[] generatorParameters4Task(String paramString)
  {
    List localList = generatorViewScheduleSavedInfoFromTask(paramString);
    HashMap localHashMap = new HashMap();
    int i = 0;
    int j = localList.size();
    while (i < j)
    {
      Parameter[] arrayOfParameter2 = ((ViewScheduleSavedInfo)localList.get(i)).getFArrayParameters();
      if (arrayOfParameter2 == null)
        break label275:
      int l = 0;
      int i1 = arrayOfParameter2.length;
      while (l < i1)
      {
        if (localHashMap.get(arrayOfParameter2[l].getName()) == null)
        {
          localHashMap.put(arrayOfParameter2[l].getName(), arrayOfParameter2[l]);
        }
        else
        {
          Parameter localParameter = (Parameter)localHashMap.get(arrayOfParameter2[l].getName());
          if (localParameter.equals(arrayOfParameter2[l]))
            break label269:
          HashSet localHashSet = new HashSet();
          Iterator localIterator2 = ((FArray)localParameter.getValue()).iterator();
          while (localIterator2.hasNext())
            localHashSet.add(localIterator2.next());
          Iterator localIterator3 = ((FArray)arrayOfParameter2[l].getValue()).iterator();
          while (localIterator3.hasNext())
            localHashSet.add(localIterator3.next());
          localHashMap.put(localParameter.getName(), new Parameter(localParameter.getName(), new FArray(localHashSet)));
        }
        label269: ++l;
      }
      label275: ++i;
    }
    Parameter[] arrayOfParameter1 = new Parameter[localHashMap.size() + 1];
    arrayOfParameter1[0] = new Parameter(ScheduleWorkBook.TIMEPARAMETERNAME);
    Iterator localIterator1 = localHashMap.entrySet().iterator();
    for (int k = 1; localIterator1.hasNext(); ++k)
      arrayOfParameter1[k] = ((Parameter)((Map.Entry)localIterator1.next()).getValue());
    return arrayOfParameter1;
  }

  public static Map generatorWidgetMap(Parameter[] paramArrayOfParameter, String paramString)
  {
    HashMap localHashMap = new HashMap();
    int i = 0;
    int j = paramArrayOfParameter.length;
    while (i < j)
    {
      ComboBox localComboBox;
      if (paramArrayOfParameter[i].getName().equals(ScheduleWorkBook.TIMEPARAMETERNAME))
      {
        localComboBox = new ComboBox();
        List localList = generateTriggerTimes(paramString);
        localComboBox.setDictionary(new CustomDictionary(localList.toArray(new String[localList.size()]), localList.toArray(new String[localList.size()])));
        localHashMap.put(paramArrayOfParameter[i].getName(), localComboBox);
      }
      else
      {
        localComboBox = new ComboBox();
        localComboBox.setDictionary(new CustomDictionary(((FArray)paramArrayOfParameter[i].getValue()).asObjects(), ((FArray)paramArrayOfParameter[i].getValue()).asObjects()));
        localHashMap.put(paramArrayOfParameter[i].getName(), localComboBox);
      }
      ++i;
    }
    return localHashMap;
  }

  private static List generateTriggerTimes(String paramString)
  {
    ArrayList localArrayList = new ArrayList();
    File[] arrayOfFile = new File(FRContext.getCurrentEnv().getPath() + File.separator + "schedule" + File.separator + paramString).listFiles();
    int i = 0;
    int j = arrayOfFile.length;
    while (i < j)
    {
      String[] arrayOfString = arrayOfFile[i].list();
      int k = 0;
      int l = arrayOfString.length;
      while (k < l)
      {
        localArrayList.add(arrayOfFile[i].getName() + " " + arrayOfString[k].substring(0, 2) + ":" + arrayOfString[k].substring(2, arrayOfString[k].length()));
        ++k;
      }
      ++i;
    }
    return localArrayList;
  }

  public static File getScheduleSavaPathFile(String[] paramArrayOfString)
  {
    if (ArrayUtils.isEmpty(paramArrayOfString))
      return null;
    String str1 = paramArrayOfString[0];
    String str2 = paramArrayOfString[1];
    String str3 = paramArrayOfString[2];
    if ((FRContext.getCurrentEnv() != null) && (StringUtils.isNotBlank(str1)) && (StringUtils.isNotBlank(str3)))
    {
      String str4 = FRContext.getCurrentEnv().getPath() + File.separator + "schedule" + File.separator + str1 + File.separator + str2 + File.separator;
      if (StringUtils.isNotEmpty(str3))
        return new File(str4 + str3 + File.separator);
      File localFile = new File(str4);
      if (localFile.exists())
        return localFile.listFiles()[0];
    }
    return null;
  }

  public static File getScheduleSavaPathFile(Map paramMap)
  {
    String str1 = ((String)paramMap.get("task")).replaceAll("\"", "");
    String str2 = ((String)paramMap.get("triggerTime")).replaceAll("\"", "");
    String[] arrayOfString1 = str2.trim().split("\\s+");
    if (arrayOfString1.length < 2)
      arrayOfString1 = new String[] { arrayOfString1[0], "" };
    arrayOfString1[1] = arrayOfString1[1].replaceAll(":", "");
    if (arrayOfString1[1].length() > 4)
      arrayOfString1[1] = arrayOfString1[1].substring(0, 4);
    String[] arrayOfString2 = new String[3];
    arrayOfString2[0] = str1;
    System.arraycopy(arrayOfString1, 0, arrayOfString2, 1, 2);
    return getScheduleSavaPathFile(arrayOfString2);
  }

  public static Map getParaMap(Map paramMap)
  {
    HashMap localHashMap = new HashMap();
    Iterator localIterator = paramMap.keySet().iterator();
    while (true)
    {
      String str;
      do
      {
        if (!(localIterator.hasNext()))
          break label84;
        str = (String)localIterator.next();
      }
      while ((str.equalsIgnoreCase("task")) || (str.equalsIgnoreCase("triggerTime")) || (str.equalsIgnoreCase("action")));
      localHashMap.put(str, paramMap.get(str));
    }
    label84: return localHashMap;
  }

  public static ScheduleWorkBook createScheduleWorkBook(ReportletRequest paramReportletRequest)
  {
    try
    {
      return new ScheduleWorkBook(((AbstractReportletRequest)paramReportletRequest).getParameterMap());
    }
    catch (Exception localException)
    {
      FRContext.getLogger().log(Level.WARNING, localException.getMessage(), localException);
    }
    return null;
  }
}